// 导入自定义的请求工具模块，该模块封装了发送网络请求的方法
import request from "@/utils/request.js";

/**
 * 查询商品单位列表
 *
 * 此函数用于向服务器发送请求，以获取商品单位的列表数据。
 *
 * @param {Object} query - 查询参数对象，包含用于筛选商品单位列表的条件。
 *                         例如，可以包含页码（如 pageNum）、每页数量（如 pageSize）、商品单位名称（如 name）等信息。
 *                         这些参数会被作为查询字符串附加到请求的 URL 后面，用于精确筛选所需的商品单位数据。
 * @returns {Promise} - 返回一个 Promise 对象，该 Promise 在请求成功时会解析为服务器响应的数据，
 *                      数据通常包含商品单位列表和总记录数等信息；
 *                      在请求失败时会被拒绝并抛出错误，可通过 .catch() 方法捕获错误信息。
 */
export function listProductUnit(query) {
    // 调用 request 函数发送 HTTP 请求
    return request({
        // 请求的 URL 地址，指定了服务器端处理商品单位列表查询的接口路径
        url: '/product/productUnit/list',
        // 请求的方法，这里使用 GET 方法，用于从服务器获取资源
        method: 'get',
        // 请求的参数，将传入的 query 对象作为查询参数发送到服务器
        params: query
    });
}

/**
 * 新增商品单位
 *
 * 该函数用于向服务器发送新增商品单位的请求，将新商品单位的数据传递给服务器进行创建操作。
 *
 * @param {Object} data - 新增商品单位所需的数据对象。
 *                        此对象应包含商品单位的必要信息，例如单位名称（name）等，
 *                        这些信息会被作为请求体发送到服务器，用于在数据库中创建新的商品单位记录。
 * @returns {Promise} - 返回一个 Promise 对象，当请求成功时，Promise 会解析为服务器的响应数据，
 *                      响应数据可能包含创建成功的提示信息或新商品单位的详细信息；
 *                      若请求失败，Promise 会被拒绝并抛出错误，可通过 .catch() 方法处理错误。
 */
export function addProductUnit(data) {
    return request({
        // 请求的 URL 地址，指定了服务器端处理新增商品单位的接口路径
        url: '/product/productUnit',
        // 请求的方法，使用 POST 方法向服务器提交数据以创建新资源
        method: 'post',
        // 请求体数据，将传入的 data 对象发送到服务器
        data: data
    });
}

/**
 * 查询商品单位详细信息
 *
 * 该函数用于根据商品单位的 ID 向服务器发送请求，获取指定商品单位的详细信息。
 *
 * @param {number|string} id - 商品单位的唯一标识符，用于指定要查询的商品单位。
 *                             服务器会根据这个 ID 从数据库中查找对应的商品单位记录。
 * @returns {Promise} - 返回一个 Promise 对象，当请求成功时，Promise 会解析为服务器返回的商品单位详细数据，
 *                      包含商品单位的各种属性信息；
 *                      若请求失败，Promise 会被拒绝并抛出错误，可通过 .catch() 捕获错误。
 */
export function getProductUnit(id) {
    return request({
        // 请求的 URL 地址，将商品单位 ID 拼接到 URL 中，指定了服务器端处理单个商品单位查询的接口路径
        url: '/product/productUnit/' + id,
        // 请求的方法，使用 GET 方法从服务器获取资源
        method: 'get'
    });
}

/**
 * 修改商品单位信息
 *
 * 该函数用于向服务器发送修改商品单位信息的请求，将更新后的商品单位数据传递给服务器。
 *
 * @param {Object} data - 修改商品单位所需的数据对象。
 *                        此对象应包含要修改的商品单位的完整或部分更新信息，例如单位名称（name）等。
 *                        这些信息会被作为请求体发送到服务器，服务器会根据这些数据更新数据库中对应的商品单位记录。
 * @returns {Promise} - 返回一个 Promise 对象，当请求成功时，Promise 会解析为服务器的响应数据，
 *                      响应数据可能包含修改成功的提示信息；
 *                      若请求失败，Promise 会被拒绝并抛出错误，可通过 .catch() 方法处理错误。
 */
export function updateProductUnit(data) {
    return request({
        // 请求的 URL 地址，指定了服务器端处理修改商品单位的接口路径
        url: '/product/productUnit',
        // 请求的方法，使用 PUT 方法向服务器提交数据以更新已有资源
        method: 'put',
        // 请求体数据，将传入的 data 对象发送到服务器
        data: data
    });
}

/**
 * 删除商品单位
 *
 * 该函数用于根据商品单位的 ID 向服务器发送删除请求，将指定的商品单位从数据库中移除。
 *
 * @param {number|string} id - 商品单位的唯一标识符，用于指定要删除的商品单位。
 *                             服务器会根据这个 ID 从数据库中查找对应的商品单位记录并删除。
 * @returns {Promise} - 返回一个 Promise 对象，当请求成功时，Promise 会解析为服务器的响应数据，
 *                      响应数据可能包含删除成功的提示信息；
 *                      若请求失败，Promise 会被拒绝并抛出错误，可通过 .catch() 方法处理错误。
 */
export function deleteProductUnit(id) {
    return request({
        // 请求的 URL 地址，将商品单位 ID 拼接到 URL 中，指定了服务器端处理商品单位删除的接口路径
        url: '/product/productUnit/' + id,
        // 请求的方法，使用 DELETE 方法从服务器删除资源
        method: 'delete'
    });
}

// 查询全部商品单位
export function getUnitAll() {
    return request({
        url: '/product/productUnit/getUnitAll',
        method: 'get'
    })
}